package simple.tree;

import struct.TreeNode;

/**
 * <a href="https://leetcode.cn/problems/minimum-absolute-difference-in-bst/">530. 二叉搜索树的最小绝对差</a>
 * <a href="https://leetcode.cn/problems/minimum-distance-between-bst-nodes/">783. 二叉搜索树节点最小距离</a>
 * 给你一个二叉搜索树的根节点 root ，返回 树中任意两不同节点值之间的最小差值 。
 * 差值是一个正数，其数值等于两值之差的绝对值。
 * 示例 1：
 *   输入：root = [4,2,6,1,3]
 *   输出：1
 * 示例 2：
 *   输入：root = [1,0,48,null,null,12,49]
 *   输出：1
 * 提示：
 *   树中节点的数目范围是 [2, 10^4]
 *   0 <= Node.val <= 10^5
 * @author 刘学松
 * @date 2023-05-30 15:27
 */
public class 二叉搜索树的最小绝对差 {
    int minVal = -1;
    int ans = 100001;
    public int getMinimumDifference(TreeNode root) {
        if (root.left != null) {
            getMinimumDifference(root.left);
        }
        if (minVal != -1) {
            ans = Math.min(ans, root.val - minVal);
        }
        minVal = root.val;
        if (root.right != null) {
            getMinimumDifference(root.right);
        }
        return ans;
    }
}
